package entidades.proxies;

import entidades.Cor;
import entidades.Estilo;
import entidades.Familia;
import entidades.Textura;
import entidades.interfaces.IEstilo;
import gestordeentidades.GestorDeEntidades;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * Trabalho DAS - 2014/2015
 * @author a21210380, a21190325, a21210392
 */
public class ProxyFamilia extends Familia {

    public ProxyFamilia(String nome, Cor corLinhaDefault, Cor corTextoDefault, Textura fundoDefault) {
        super(nome, corLinhaDefault, corTextoDefault, fundoDefault);
    }
    
    private void verificarEstilos() {
        if(estilos == null) {
            Map<String, Estilo> est = GestorDeEntidades
                    .getInstance()
                    .procurarPorTodasAsEntidadesComoMapa(Estilo.class)
                    .values()
                    .stream()
                    .filter((Estilo e) -> {
                        return e.getFamilia() == this;
                    })
                    .collect(Collectors.toMap((Estilo e) -> {return e.getNomeDoEstilo();}, (Estilo e) -> {return e;}));
            
            estilos.putAll(est);
        }
    }
    
    @Override
    public Set<String> getNomeDosEstilos() {
        verificarEstilos();
        return super.getNomeDosEstilos();
    }

    @Override
    public IEstilo getEstilo(String nomeDoEstilo) {
        verificarEstilos();
        return super.getEstilo(nomeDoEstilo);
    }
}
